草庐IT

Android HTML ImageGetter 作为 AsyncTask

全部标签

c++ - 在 C++ 中作为参数的多态(通用)函数

我正在开发一个相对简单的程序(实际上是一个计算器)。但是,我已决定使程序的所有组件尽可能通用,因为:这是很好的做法。它让事情变得有趣。作为这个程序的一部分,我正在使用我正在编写的Tuple类。我知道一个类已经存在,但我喜欢完全控制我的代码,这只是一个练习。我需要做的一件事是将一个表达式元组(其中表达式本身是通用的)转换为一个包含表达式求值结果的元组。简而言之,我有(省略了一些琐碎的部分):templateclassExpression{public:virtualTEval()=0;//...};templateclassTuple{//...private:Firstfirst;Tu

c++ - 避免基于作为模板参数的函数的返回值的分支

假设以下策略类负责算法的一个方面:structVoidF{staticvoidf(){...//somecodethathassideeffects}};structBoolF{staticboolf(){boolres=...;//somecomputationreturnres;}};BoolF策略是“增强感知”:当BoolF::f()返回true时,算法可以退出。VoidF是“增强意识”,因此它返回void(我不想强制我的图书馆的用户返回bool,因为这对他来说没有任何意义)。算法目前是这样写的:templatestructAlgorithm{voidrun(){...//som

c++ - 作为参数的空初始值设定项列表不调用默认构造函数

下面的代码classA{public:A(){}//defaultconstructorA(inti){}//secondconstructor};intmain(){Aobj({});}调用第二个构造函数。可能空的initializer_list被视为一个参数并被转换为int。但是当您从类中删除第二个构造函数时,它会调用默认构造函数。为什么?此外,我理解为什么Aobj{{}}总是会调用带有一个参数的构造函数,因为我们传递的是一个空的initializer_list参数。 最佳答案 Aobj({});中大括号括起来的括号表示如果可能

c++ - 作为模板非类型参数的 C 字符串适用于 gcc 6.3,但不适用于 Visual Studio 2017(19.16.27027.1 for x64)

以下代码:#includetemplatevoidf(){std::cout();//Microsoft(R)C/C++OptimizingCompilerVersion19.16.27027.1forx64//Copyright(C)MicrosoftCorporation.Allrightsreserved.////string-as-template-parameter.cpp//string-as-template-parameter.cpp(10):fatalerrorC1001:Aninternalerrorhasoccurredinthecompiler.//(compi

c++ - 在 switch 语句中使用常量数组的元素作为 case

我正在尝试将一组按键映射到一组命令。因为我从多个地方处理命令,所以我想在键和命令之间设置一个抽象层,这样如果我更改底层键映射,就不必更改太多代码。我目前的尝试是这样的://input.henumLOGICAL_KEYS{DO_SOMETHING_KEY,DO_SOMETHING_ELSE_KEY,...countof_LOGICAL_KEYS};staticconstSDLKeyLogicalMappings[countof_LOGICAL_KEYS]={SDLK_RETURN,//DoSomethingSDLK_ESCAPE,//DoSomethingElse...};//some_

c++ - 在同一类中使用 constexpr 作为模板参数时出错

如果我尝试编译以下C++0x代码,我会收到一个错误:templatestructfoo{};structbar{staticconstexprintnumber(){return256;}voidfunction(foo&);};对于gcc4.6.1,错误信息是:test.cc:6:27:error:‘staticconstexprintbar::number()’usedbeforeitsdefinitiontest.cc:6:28:note:intemplateargumentfortype‘int’使用clang2.8,错误信息是:test.cc:6:20:error:non-t

c++ - 将 vector 作为参数传递并使用它,为什么会崩溃?

我是C++的新手,尤其是STL。我试图将vector作为参数传递给函数,但它会导致应用程序崩溃。我正在使用Code::Blocks和MingW。这是一个简单的代码。#include#includeusingnamespacestd;voidfoo(constvector&v){coutv;v[0]=25;foo(v);return0;}谢谢! 最佳答案 它崩溃是因为您使用v[0]写入了vector的末尾-这是未定义的行为。如果您什么都不做,它的初始大小为0。(您随后也阅读了相同的内容,但在那之前所有的赌注都已关闭)。你可能想做:ve

c++ - 作为非类型名参数的局部变量

为什么将局部变量用作非类型参数是非法的?例如,在下一段代码中,local_var不能作为X的参数。templatestructX{};voidf(intlocal_var){Xx;} 最佳答案 因为模板参数必须在编译时求值,编译器直到运行时才知道局部变量的地址(为了绑定(bind)一个对象的引用,编译器需要知道局部变量的地址对象)。请注意,C++11标准在第14.3.2/1段中明确说明了可以提供哪些非类型模板参数:Atemplate-argumentforanon-type,non-templatetemplate-paramete

c++ - 如何在多线程中使用模板类型作为槽和信号参数?

我可以以任何方式使用模板类型作为槽或信号参数吗?例如,我正在尝试定义以下内容:voidexampleSignal(std::maparg);voidexampleSlot(std::maparg);这会在运行时产生以下结果:QObject::connect:Cannotqueueargumentsoftype'std::map'(Makesure'std::map'isregisteredusingqRegisterMetaType().)正在尝试注册std::map与Q_DECLARE_METATYPE()导致编译失败并且显然不受支持。作为解决方法,我使用QVariantMap而不是

c++ - C 将参数作为空指针列表传递给从 LoadLibrary() 导入的函数

我遇到的问题是我想创建一个通用的命令行应用程序,该应用程序可用于加载库DLL,然后调用库DLL中的函数。函数名称在命令行上指定,参数也在实用程序命令行上提供。我可以从使用LoadLibrary()函数动态加载的DLL访问外部函数。加载库后,我可以使用GetProcAddress()获取指向该函数的指针。我想使用命令行上指定的参数调用该函数。我可以将void-pointer-list传递给由LoadLibrary()函数返回的函数指针,类似于下面的示例吗?为了简化示例代码,我删除了错误检查。有没有办法让这样的东西工作://SomewhereinanotherdllintDoStuff(i